# 定义一个包含十六进制字符串的列表
n=['33DB76A7C594BFC3','CD36C2E32A371480',
'8CEE9FF3933365BC','57373FE3C783A78F',
'59B322834BB73B59','423719DD973C6AD3',
'C858FBEABF480DA3','3CC8C789BA7B8135']

# func1
# 初始化变量a和b
a=1;b=2
# 创建一个空字典f1
f1={}
# 通过循环生成字典f1，键为a+b的十六进制表示的后16位，值为i的字符串表示
for i in range(3,100):
    t=a+b
    f1[hex(t)[-16:]]=str(str(i))
    a,b=b,t

# func2
# 初始化变量a、b和c
a=1;b=2;c=3
# 创建一个空字典f2
f2={}
# 通过循环生成字典f2，键为a+b+c的十六进制表示的后16位，值为i的字符串表示
for i in range(4,100):
    t=a+b+c
    f2[hex(t)[-16:]]=str(str(i))
    a,b,c=b,c,t

# func3
# 初始化变量a、b、c和d
a=1;b=2;c=3;d=4
# 创建一个空字典f3
f3={}
# 通过循环生成字典f3，键为a+b+c+d的十六进制表示的后16位，值为i的字符串表示
for i in range(5,100):
    t=a+b+c+d
    f3[hex(t)[-16:]]=str(str(i))
    a,b,c,d=b,c,d,t

# func4
# 初始化变量a、b、c、d和e
a=1;b=2;c=3;d=4;e=5
# 创建一个空字典f4
f4={}
# 通过循环生成字典f4，键为a+b+c+d+e的十六进制表示的后16位，值为i的字符串表示
for i in range(6,100):
    t=a+b+c+d+e
    f4[hex(t)[-16:]]=str(str(i))
    a,b,c,d,e=b,c,d,e,t

# 初始化flag字符串
flag='flag{'
# 遍历列表n中的元素
for i in range(0,8):
    # 将元素转换为小写
    n[i]=n[i].lower()
    # 根据n中的元素在字典f1、f2、f3、f4中查找对应的值，并添加到flag字符串中
    if n[i] in f1.keys():
        flag=flag+f1[n[i]]+"_"
    elif n[i] in f2.keys():
        flag=flag+f2[n[i]]+"_"
    elif n[i] in f3.keys():
        flag=flag+f3[n[i]]+"_"
    elif n[i] in f4.keys():
        flag=flag+f4[n[i]]+"_"
# 移除flag字符串最后的下划线，并添加'}'，形成最终的flag
flag=flag[:-1]+'}'
# 输出flag
print(flag)
